package com.touni.designpattern.abstractfactorypattern;

import com.touni.designpattern.abstractfactorypattern.abfactory.AbstractFactory;
import com.touni.designpattern.abstractfactorypattern.abfactory.factory.Color;
import com.touni.designpattern.abstractfactorypattern.abfactory.factory.Shape;

/**
 * @ClassName : DemoMain
 * @Description : 抽象工厂模式    属于创建者模式
 * 是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式，它提供了一种创建对象的最佳方式。
 *
 * 在抽象工厂模式中，接口是负责创建一个相关对象的工厂，不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。
 * @Author : lwq
 * @Date: 2020-10-19 09:33
 */
public class DemoMain {

    public static void main(String[] args) {
        AbstractFactory color = FactoryProducer.getAbFactory("color");
        Color red = color.getColor("red");
        red.colorName();
        Color green = color.getColor("green");
        green.colorName();
        AbstractFactory shape = FactoryProducer.getAbFactory("shape");
        Shape circular = shape.getShape("circular");
        circular.draw();
        Shape rectangle = shape.getShape("rectangle");
        rectangle.draw();

    }

}
